МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Національний університет “Львівська політехніка”
МАСИВИ СИМВОЛІВ (РЯДКИ) В МОВІ ПРОГРАМУВАННЯ С
Інструкція
до Лабораторної роботи № 5
з курсу “Проблемно-орієнтовані мови програмування”
для студентів базового напрямку 6.08.04
"Комп’ютерні науки"
ЗАТВЕРДЖЕНО
на засіданні кафедри
Системи автоматизованого проектування
Протокол № 1 від 31 серпня 2009 р.
ЛЬВІВ 2009
Масиви символів (рядки) в мові програмування С
Інструкції до лабораторної роботи № 5 з курсу “Проблемно-орієнтовані мови програмування” для студентів базового напрямку 6.08.04 "Комп’ютерні науки“
Укл. М. І. Андрійчук, І. І. Чура. -Львів: НУ “ЛП”, 2009 р. - 13 с.
Укладачі М. І. Андрійчук, доц., к. ф.-м. н.
І. І. Чура, доц., к.т.н.
Відповідальний за випуск С. П. Ткаченко, канд. техн. наук, доц.
Рецензенти М. В. Лобур, доктор техн. наук,
В. І. Каркульовський, канд. техн. наук
1. МЕТА РОБОТИ
Мета роботи - навчитися використовувати символьні масиви для розв’язання задач роботи зі стрічками.
2. ТЕОРЕТИЧНІ ВІДОМОСТІ
Рядки символів і дії з ними
На відміну від інших мов програмування у C не визначено спеціального типу для опрацювання рядків. Масив символів (чи рядок або стрічка) розглядається як масив елементів типу char, який закінчується символом '\0' (нуль-символ) що є ознакою кінця рядка. Такі рядки називають ASCII-рядками. Сталі типу рядок записують у лапках, наприклад, "Львівська політехніка", "студенти", “ “ - рядок, що містить один символ-пропуск. У сталих рядках нуль-символ дописується автоматично
Зауваження 1. Більшості компіляторів мови C додає нуль-символ у кінець рядка, тому зазначати його не обов'язково.
Масиви символів оголошують так:
char <назва рядка>[довжина рядка];
Під час оголошення символьного масиву необхідно до фактичної довжини рядка додати одиницю для нульового символу (але не у всіх компіляторах). Якщо масив символів оголошують й ініціалізують одночасно, то довжину можна не зазначати, компілятор визначить її. Оскільки рядки є масивами символів, то назва рядка є вказівником на його перший елемент (на перший символ).
Приклад 1. Розглянемо оголошення та ініціалізацію рядків
const char text1[] = "Ми вивчаємо програмування";
char slovo[] = "University";
char fraza1[11], fraza2[40];
Тут оголошено сталу textl, яка має значення "Мови програмування", символьні масиви: slovo (без зазначення розміру), frazal (може містити до 10 символів) та fraza2 (до 39 символів).
Символьний масив slovo ще можна оголосити так:
char slovo[11] = "University"; або так
char slovo[ ] = {'U’, 'n’, ‘i’ , ‘v’, ‘e’, ‘r’, ‘s’, 'і', ‘t’, ‘у’, ‘\0’};
Тут потрібно вручну записати нуль-символ, інакше компілятор трактуватиме змінну slovo не як рядок, а як масив.
Рядки можна опрацьовувати посимвольно за допомогою або назви масиву, наприклад, так:
for (int n = 0; n < 11; n++) *(fraza1+n) = *(slovo+n);
cout << frazal;
Змінній fraza1 надається значення "University" і ця фраза виводиться на екран. Інакше це можна зробити так:
for (int n = 0; n < 11; n++)
fraza1 [n] = slovo[n]; cout << fraza1;
Ввести весь масив символів можна за допомогою команди
сіn >> <назва масиву>;
Якщо рядок даних містить символ пропуску, то сіn >> зчитає дані лише до першого пропуску. Щоб весь рядок до символу вводу, необхідно застосувати
cin.get(<назва рядка>, <максимальна довжина рядка>);
Наприклад, cin.get (fraza2, 40). Зчитати символ вводу можна cin.get ( ). Зчитати рядок разом із символом вводу із способів:
cin.get(fraza2,40);
cin.get ();
cin.get(fraza2, 40).get ( );
cin.getline(fraza2,40);
Вивести значення рядка на екран можна за допомогою команди
cout << <назва рядка>;
Посимвольно вводити чи виводити елементи рядка можна за допомогою команд циклу for або while.
Наприклад,
for (int n = 0; n < 11; n++) сіп >> *(fraza1 + n);
В кінці рядка необхідно поставити нуль-символ, тобто
*(fraza1+n+1)=’\0’;
У бібліотеці conio.h визначені стандартні функції введення-виведення рядків. Наприклад, getc ( ), getchar ( ) зчитують по одному символу ря...